Skip to content

Add blog post: accessibility-in-2026-a-practical-guide.mdx#148

Open
deepu0 wants to merge 1 commit into
mainfrom
content/blog-post-2026-06-26
Open

Add blog post: accessibility-in-2026-a-practical-guide.mdx#148
deepu0 wants to merge 1 commit into
mainfrom
content/blog-post-2026-06-26

Conversation

@deepu0

@deepu0 deepu0 commented Jun 26, 2026

Copy link
Copy Markdown
Owner

User description

Blog post about Accessibility for Frontend Junction


CodeAnt-AI Description

Publish a new guide on accessibility for frontend development in 2026

What Changed

  • Adds a new published blog post titled “Accessibility in 2026: A Practical Guide”
  • Covers why accessibility matters, common pitfalls, and practical best practices for modern frontend projects
  • Includes code examples and a real-world component example to support the guide

Impact

✅ New accessibility guidance for readers
✅ Easier onboarding to accessibility basics
✅ More practical frontend learning content

💡 Usage Guide

Checking Your Pull Request

Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.

Talking to CodeAnt AI

Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:

@codeant-ai ask: Your question here

This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.

Example

@codeant-ai ask: Can you suggest a safer alternative to storing this secret?

Preserve Org Learnings with CodeAnt

You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:

@codeant-ai: Your feedback here

This helps CodeAnt AI learn and adapt to your team's coding style and standards.

Example

@codeant-ai: Do not flag unused imports.

Retrigger review

Ask CodeAnt AI to review the PR again, by typing:

@codeant-ai: review

Check Your Repository Health

To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.

Summary by CodeRabbit

  • New Features
    • Published a new blog post: “Accessibility in 2026: A Practical Guide.”
    • Covers why accessibility matters, core accessibility concepts, common pitfalls, and practical best practices.
    • Includes a real-world code example and a closing discussion prompt for readers.

@vercel

vercel Bot commented Jun 26, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
frontend-junction Ready Ready Preview, Comment Jun 26, 2026 3:34am

@codeant-ai

codeant-ai Bot commented Jun 26, 2026

Copy link
Copy Markdown

CodeAnt AI is reviewing your PR.

@coderabbitai

coderabbitai Bot commented Jun 26, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Adds a new MDX blog post about accessibility in 2026, including frontmatter metadata, an article section on key accessibility concepts and a TypeScript/JSX example, and a closing community discussion prompt.

Changes

Accessibility blog post

Layer / File(s) Summary
Post content
content/blog-post-2026-06-26/accessibility-in-2026-a-practical-guide.mdx
Adds the post metadata, the main accessibility article body with a code example, and the closing discussion prompt.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~2 minutes

Poem

A bunny hops through a1t paths,
With accessible words and gentle crafts.
🌿 A guide now blooms in the springtime light,
For comfy reading, clear and bright.
Thump-thump! I nod, and nibble a pea.
“Good code for all” is sweet to me.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description covers the post content, but it omits the required template sections like Fixes #, change type, testing, screenshots, and checklist. Add the missing template sections: a brief change summary, Fixes # issue, type of change, testing steps, screenshots if needed, and checklist items.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly states that a blog post is being added and matches the main change, though it includes the filename.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch content/blog-post-2026-06-26

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

content/blog-post-2026-06-26/accessibility-in-2026-a-practical-guide.mdx

Parsing error: Invalid left-hand side in prefix operation. (1:2)


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@codeant-ai codeant-ai Bot added the size:M This PR changes 30-99 lines, ignoring generated files label Jun 26, 2026
Comment on lines +1 to +8
---
title: 'Accessibility in 2026: A Practical Guide'
description: 'A comprehensive guide to accessibility for modern frontend development in 2026.'
date: '2026-06-26'
tags: ['Accessibility', 'Frontend', '2026']
published: true
image: './images/post-image.png'
---

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: This post is saved under content/blog-post-2026-06-26/, but the content loader is configured to index only content/blog/**/*.mdx, so this article will never be built or shown on blog/tag pages. Move the file into the content/blog/ tree (or expand the collection pattern) so it is actually ingested. [api mismatch]

Severity Level: Major ⚠️
- ⚠️ New accessibility article missing from `/blog` listing page.
- ⚠️ Article excluded from homepage latest posts carousel.
- ⚠️ Sitemap omits URL, reducing SEO visibility.
- ⚠️ Tags page ignores article's tag metadata.
Steps of Reproduction ✅
1. Build the project with Velite configured in `velite.config.ts:11-31`, where the `posts`
collection uses `pattern: 'blog/**/*.mdx'` and `root: 'content'`, meaning only files under
`content/blog/**/*.mdx` are ingested.

2. Note that the new article file is located at
`content/blog-post-2026-06-26/accessibility-in-2026-a-practical-guide.mdx:1-81`, which
does not match the `blog/**/*.mdx` pattern, so Velite does not include it in the generated
`posts` array exported from `#site/content`.

3. Request the blog listing page at `/blog` implemented in `app/blog/page.tsx:1-37`, which
renders `sortedPosts = sortPosts(posts.filter((post) => post.published))`; the new article
is absent from `posts`, so it never appears in the listing or pagination.

4. Request the individual blog route that uses `posts` in
`app/blog/[...slug]/page.tsx:18-22,71-80`, or inspect the homepage latest posts in
`app/page.tsx:13-26` and sitemap generation in `app/sitemap.ts:8-16` and tags page in
`app/tags/page.tsx:3-17`; in all cases, the new article is missing because it is outside
the `content/blog/**/*.mdx` collection path.

Fix in Cursor Fix in VSCode Claude

(Use Cmd/Ctrl + Click for best experience)

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** content/blog-post-2026-06-26/accessibility-in-2026-a-practical-guide.mdx
**Line:** 1:8
**Comment:**
	*Api Mismatch: This post is saved under `content/blog-post-2026-06-26/`, but the content loader is configured to index only `content/blog/**/*.mdx`, so this article will never be built or shown on blog/tag pages. Move the file into the `content/blog/` tree (or expand the collection pattern) so it is actually ingested.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask user if the user wants to fix the rest of the comments as well. if said yes, then fetch all the comments validate the correctness and implement a minimal fix
👍 | 👎

@codeant-ai

codeant-ai Bot commented Jun 26, 2026

Copy link
Copy Markdown

CodeAnt AI finished reviewing your PR.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (2)
content/blog-post-2026-06-26/accessibility-in-2026-a-practical-guide.mdx (2)

24-34: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Replace vacuous example with an actual accessibility pattern.

The useModernPattern example doesn't demonstrate any accessibility technique and would confuse readers expecting practical guidance. Replace it with a real 2026-relevant pattern such as focus management, reduced motion preference, or keyboard navigation.

// Example: respecting user motion preferences
function usePrefersReducedMotion() {
  const [prefersReducedMotion, setPrefersReducedMotion] = React.useState(false);

  React.useEffect(() => {
    const mediaQuery = window.matchMedia('(prefers-reduced-motion: reduce)');
    setPrefersReducedMotion(mediaQuery.matches);
    
    const handler = (event: MediaQueryListEvent) => {
      setPrefersReducedMotion(event.matches);
    };
    mediaQuery.addEventListener('change', handler);
    return () => mediaQuery.removeEventListener('change', handler);
  }, []);

  return prefersReducedMotion;
}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/blog-post-2026-06-26/accessibility-in-2026-a-practical-guide.mdx`
around lines 24 - 34, The example in useModernPattern is just a placeholder and
does not show a real accessibility technique, so replace it with a practical
pattern readers can use, such as focus management, reduced motion, or keyboard
navigation. Update the snippet to a concrete accessibility hook/example with
real behavior, and rename the symbol to something specific like
usePrefersReducedMotion or another actual pattern so the code and surrounding
explanation clearly match the accessibility topic.

53-71: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Demonstrate accessible patterns in the "Real-World Example."

The component uses generic <div> wrappers and lacks semantic structure, selection state, and robust key handling. In an accessibility guide, readers will copy this pattern verbatim.

// Accessible list of actionable items
interface Props {
  items: string[];
  activeItem: string | null;
  onActivate: (value: string) => void;
}

function AccessibleActionList({ items, activeItem, onActivate }: Props) {
  return (
    <ul role="list" aria-label="Available actions">
      {items.map((item, index) => (
        <li key={`${item}-${index}`}>
          <button
            aria-pressed={activeItem === item}
            onClick={() => onActivate(item)}
            className="focus:ring-2 focus:ring-offset-2"
          >
            {item}
          </button>
        </li>
      ))}
    </ul>
  );
}

Also note: key={item} at line 64 is unsafe if data contains duplicates or is reordered. Use a stable identifier or composite key.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/blog-post-2026-06-26/accessibility-in-2026-a-practical-guide.mdx`
around lines 53 - 71, The “Real-World Example” in the accessibility guide should
be updated to demonstrate a semantic, accessible pattern instead of a generic
wrapper-based list. Replace the current Component example with a clearer
accessible list component (for example, an AccessibleActionList-style pattern)
that uses list semantics, exposes selection state, and includes a
keyboard/focus-friendly button interaction. Also fix the keying strategy in the
map callback by avoiding a raw item key from the current Component and using a
stable unique identifier or composite key so duplicates and reordering are
handled safely.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@content/blog-post-2026-06-26/accessibility-in-2026-a-practical-guide.mdx`:
- Line 7: The frontmatter image reference in the blog post metadata points to a
missing asset, so update the `image` field in the post frontmatter or add the
referenced file under the post’s images folder. Use the `image` entry in
`accessibility-in-2026-a-practical-guide.mdx` to locate the broken path and
ensure it resolves to an existing post image.

---

Nitpick comments:
In `@content/blog-post-2026-06-26/accessibility-in-2026-a-practical-guide.mdx`:
- Around line 24-34: The example in useModernPattern is just a placeholder and
does not show a real accessibility technique, so replace it with a practical
pattern readers can use, such as focus management, reduced motion, or keyboard
navigation. Update the snippet to a concrete accessibility hook/example with
real behavior, and rename the symbol to something specific like
usePrefersReducedMotion or another actual pattern so the code and surrounding
explanation clearly match the accessibility topic.
- Around line 53-71: The “Real-World Example” in the accessibility guide should
be updated to demonstrate a semantic, accessible pattern instead of a generic
wrapper-based list. Replace the current Component example with a clearer
accessible list component (for example, an AccessibleActionList-style pattern)
that uses list semantics, exposes selection state, and includes a
keyboard/focus-friendly button interaction. Also fix the keying strategy in the
map callback by avoiding a raw item key from the current Component and using a
stable unique identifier or composite key so duplicates and reordering are
handled safely.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 4b79d523-8c16-4005-bb8e-ed3e7ca28418

📥 Commits

Reviewing files that changed from the base of the PR and between 3b401cf and b28ed39.

📒 Files selected for processing (1)
  • content/blog-post-2026-06-26/accessibility-in-2026-a-practical-guide.mdx

date: '2026-06-26'
tags: ['Accessibility', 'Frontend', '2026']
published: true
image: './images/post-image.png'

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify image asset exists
fd "post-image.png" content/ || echo "Image not found"
fd --type directory "images" content/blog-post-2026-06-26/ || echo "Images directory not found"

Repository: deepu0/frontend-junction

Length of output: 162


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Locate the MDX file and any matching image asset or directory
git ls-files 'content/blog-post-2026-06-26/**' | sed -n '1,120p'
printf '\n---\n'
fd --hidden --type f 'post-image.png' content/ || true
printf '\n---\n'
fd --hidden --type d 'images' content/blog-post-2026-06-26/ || true
printf '\n---\n'
# Show nearby files in the post directory for context
fd --hidden --type f . content/blog-post-2026-06-26/ | sed -n '1,120p'

Repository: deepu0/frontend-junction

Length of output: 323


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Inspect the post frontmatter and file layout around the image reference
file='content/blog-post-2026-06-26/accessibility-in-2026-a-practical-guide.mdx'
wc -l "$file"
printf '\n---\n'
cat -n "$file" | sed -n '1,40p'

Repository: deepu0/frontend-junction

Length of output: 1994


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Check whether the image asset is tracked anywhere in the repository
git ls-files | rg -n '(^|/)post-image\.png$|(^|/)accessibility-in-2026-a-practical-guide\.mdx$|(^|/)blog-post-2026-06-26/' || true

Repository: deepu0/frontend-junction

Length of output: 239


Add the referenced post image or update the frontmatter path. image: './images/post-image.png' points to content/blog-post-2026-06-26/images/post-image.png, but that asset is not present, so the post will render with a broken image unless the file is added or the path is corrected.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/blog-post-2026-06-26/accessibility-in-2026-a-practical-guide.mdx` at
line 7, The frontmatter image reference in the blog post metadata points to a
missing asset, so update the `image` field in the post frontmatter or add the
referenced file under the post’s images folder. Use the `image` entry in
`accessibility-in-2026-a-practical-guide.mdx` to locate the broken path and
ensure it resolves to an existing post image.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M This PR changes 30-99 lines, ignoring generated files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant